package com.gbiac.modules.monitor.api;

import com.gbiac.modules.monitor.entity.Rule;
import com.gbiac.modules.monitor.entity.Seat;
import com.gbiac.modules.monitor.entity.SeatFaceLogin;
import com.gbiac.modules.monitor.param.UserCheckParam;
import com.gbiac.modules.monitor.param.UserSeatParam;
import org.jeecg.common.api.vo.Result;
import org.jeecg.common.system.vo.LoginUser;

import java.util.List;

public interface IMonitorApi {

    /**
     * 用户上岗
     * @param param
     */
    void checkIn(UserCheckParam param);

    /**
     * 回岗打卡
     * @param param
     */
    void checkInTemp(UserCheckParam param);

    /**
     * 用户离岗
     * @param param
     */
    void checkOut(UserCheckParam param);

    /**
     * 临时离岗，不清空席位用户
     * @param param
     */
    void checkOutTemp(UserCheckParam param);

    /**
     * 保存用户席位关系
     * @param userSeatParam
     */
    void saveUserSeat(UserSeatParam userSeatParam);

    /**
     * 查询用户绑定的席位ids
     * @param userId
     * @return
     */
    String getUserSeatIds(String userId, String loginType);

    /**
     * 获取用户当前已登录的席位
     * @param userId
     * @return
     */
    Seat getSeatByUserId(String userId);

    /**
     * 获取所有最新规则
     * @return
     */
    List<Rule> listLastRule();

    /**
     * 开始人脸登录
     * @param clientIp
     */
    void startFaceLogin(String clientIp);

    /**
     * 获取人脸登录结果
     * @param clientIp
     */
    SeatFaceLogin getFaceLoginResult(String clientIp);
    /**
     * 添加同步人员-掌静脉
     * @param isLogin 是否需要再登录，默认是
     * @param user 待同步的用户信息
     */
    Result<String> addPersonPalmVeinDevice(Boolean isLogin, LoginUser user);
    /**
     * 批量同步人员-掌静脉
     * @param userList  待同步的用户信息列表
     */
    Result<String> batchAddPersonPalmVeinDevice(List<LoginUser> userList);
    /**
     * 添加同步人员-AI算能
     * @param loginUser 待同步的用户信息
     */
    Result<String> addPersonAIDevice(LoginUser loginUser);

    Result<String> deletePersonAIDevice(String id);

    Result<String> batchAddPersonAIDevice(List<LoginUser> loginUserList);

    Result<String> deletePersonPalmVeinDevice(String id);
}
